package dawnland03.model.quest;

import java.util.Set;
import java.util.HashSet;
import java.util.Map;
import java.util.HashMap;

/**
 * User: Petru Obreja (obrejap@yahoo.com)
 * Date: Jan 23, 2010
 * Time: 7:13:26 PM
 */
public class QuestManager {
    private Map<QuestType, Set<QuestObserver>> questObservers;

    private static final QuestManager instance = new QuestManager();

    public QuestManager() {
        questObservers = new HashMap<QuestType, Set<QuestObserver>>();
    }

    public void attach(QuestType questType, QuestObserver questObserver) {
        Set<QuestObserver> questObserverSet = questObservers.get(questType);
        if (questObserverSet != null) {
            if (!questObserverSet.contains(questObserver)) {
                questObserverSet.add(questObserver);
            }
        } else {
            questObserverSet = new HashSet<QuestObserver>();
            questObserverSet.add(questObserver);
            questObservers.put(questType, questObserverSet);
        }
    }

    public void addQuest(Quest quest) {
        Set<QuestObserver> questObserverSet = questObservers.get(quest.getQuestType());
        if (questObserverSet != null) {
            for (QuestObserver questObserver : questObserverSet) {
                questObserver.notify(quest);
            }
        }
    }

    public static QuestManager getQuestManager() {
        return instance;
    }
}
